// src/utils/message.ts
import { ElMessage, type MessageHandler } from "element-plus";

export enum ShowType {
  Success,
  success = 0,
  Warning,
  warning = 1,
  Info,
  info = 2,
  Error,
  error = 3
}

// 消息队列，用于管理当前显示的消息
const messageQueue: MessageHandler[] = [];

/**
 * 显示消息，并限制最多显示 5 条。
 * @param {showType}showType 0:success\1:warn\2:info\3:error
 * @param {string}msg 消息内容
 * @param showClose 是否显示关闭按钮
 * @param maxCount  最大显示数量
 */
export function showMsg(showType: ShowType, msg: string, showClose: boolean = true, maxCount: number = 5) {
  // 创建消息配置
  const options = { message: msg, showClose, duration: 3000 };

  // 创建消息实例
  const newMessage = createMessage(showType, options);

  // 将新消息添加到队列
  messageQueue.push(newMessage);

  // 如果消息数超过 5 条，移除并关闭最早的一条
  if (messageQueue.length > maxCount) {
    const oldestMessage = messageQueue.shift(); // 移除最早的消息
    oldestMessage?.close(); // 手动关闭该消息
  }
}

/**
 * 根据消息类型创建消息。
 */
function createMessage(showType: ShowType, options: { message: string; showClose: boolean; duration: number }): MessageHandler {
  switch (showType) {
    case ShowType.Success:
      return ElMessage.success(options);
    case ShowType.Warning:
      return ElMessage.warning(options);
    case ShowType.Info:
      return ElMessage.info(options);
    case ShowType.Error:
      return ElMessage.error(options);
    default:
      return ElMessage.info(options);
  }
}
